# -*- coding: utf-8 -*-
"""
Author: chen xi
Date: 2025/4/30 上午11:08
File: uiautomator2_driver.py
Description: 使用 uiautomator2 驱动 Android 设备并启动 App 的核心类
"""

from uiautomator2 import connect


class AndroidAppDriver:
	"""
    封装基于 uiautomator2 的 Android 应用启动与设备连接功能。

    Attributes:
        android_device_id (str): Android 设备唯一标识（如序列号）
        app_package_name (str): 要启动的应用包名
    """
	
	def __init__(self, app_package_name: str, android_device_id=None):
		"""
        初始化 AndroidAppDriver 实例。

        Args:
            android_device_id (str): Android 设备的唯一 ID
            app_package_name (str): 要启动的 App 的包名
        """
		self.android_device_id = android_device_id
		self.app_package_name = app_package_name
		self.driver = self.connect_and_launch_app()
	
	def connect_and_launch_app(self):
		"""
        连接到指定的 Android 设备，并启动目标 App。
        """
		# 建立设备连接
		if self.android_device_id is None:
			device = connect()
		else:
			device = connect(self.android_device_id)
		
		# 启动应用
		device.app_start(self.app_package_name, wait=True)
		return device


if __name__ == "__main__":
	# 示例配置
	ANDROID_DEVICE_ID = "H675FIS8JJU8AMWW"  # 替换为实际设备ID
	APP_PACKAGE_NAME = "com.madpro"  # 替换为实际要启动的 App 包名
	
	# 创建驱动实例并启动 App
	android_app_driver = AndroidAppDriver(APP_PACKAGE_NAME, ANDROID_DEVICE_ID)
